-- REDIS  LUA 脚本：ZSET存储 校验并添加关注

-- 操作的 Redis Key
local key = KEYS[1]
-- 关注的用户ID
local followUserId = ARGV[1]
-- 时间戳
local timestamp = ARGV[2]

-- 使用 EXISTS 命令检查 Z SET 是否存在
local exists = redis.call('EXISTS', key)
if exists == 0 then
    return -1
end

-- 校验目标用户是否已经关注
if redis.call('ZSCORE', key, followUserId) then
    return 2
end

-- 动态校验关注人数是否上限
-- local maxSize = redis.call('GET', 'config:max_follow_size') or 100
-- if size >= tonumber(maxSize) then
--     return -2
-- end
-- 校验关注人数是否上限（是否达到 100）
local size = redis.call('ZCARD', key)
if size >= 1000 then
    return -2
end

-- ZADD 添加关注关系
redis.call('ZADD', key, timestamp, followUserId)
return 1
